package com.demo.config;

import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;

import javax.sql.DataSource;

/**
 * 读取application.yml配置的两个数据源，并将其注入到Spring的IOC容器中
 */
@Configuration //SpringBoot启动将该类作为配置类，同配置文件一起加载
public class DataSourceConfig {
    //将该实体注入到IOC容器中
    @Bean(name = "primaryDataSource")
    //指定数据源名称，与Bean中的name属性原理相同，主要是为了确保注入成功
    @Qualifier("primaryDataSource")
    //指定主数据源
    @Primary
    //将配置文件中的数据源读取进到方法中，进行build
    @ConfigurationProperties(prefix = "spring.datasource.test1")
    public DataSource primaryDataSource() {
        return DataSourceBuilder.create().build();
    }

    //将该实体注入到IOC容器中
    @Bean(name = "secondaryDataSource")
    //指定数据源名称，与Bean中的name属性原理相同，主要是为了确保注入成功
    @Qualifier("secondaryDataSource")
    //将配置文件中的数据源读取进到方法中，进行build
    @ConfigurationProperties(prefix = "spring.datasource.test2")
    public DataSource secondaryDataSource() {
        return DataSourceBuilder.create().build();
    }
}

